/*
给定n个整数，请统计出每个整数出现的次数，按出现次数从多到少的顺序输出。（给出的数都是不超过1000的非负整数）
输入格式：

输入的第一行包含一个整数n，表示给定数字的个数。

第二行包含n个整数，相邻的整数之间用一个空格分隔，表示所给定的整数。

输出格式：

输出多行，每行包含两个整数，分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整

数出现的次数一样多，则先输出值较小的，然后输出值较大的。


样例输入：
12
5 2 3 3 1 3 4 2 5 2 3 5

输出：
3 4
2 3
5 3
1 1
4 1
*/

#include <iostream>
using namespace std;
int main() 
{
    int a[1000] = {0};//数组a存次数
    int n, k;
    cin >> n;//整数个数
    for (int i = 0; i < n; i++)
    {
        cin >> k;
        a[k]++;
    }

    for (int i = 1000 - 1; i > 0; i--) //次数优先从多到少输出
    for (int j = 0; j < 1000; j++)//数字大小其次从小到大输出
    {
        if (a[j] == i)
        cout << j << " " << a[j] << endl;
    }        
    return 0;
}   